查看原文
其他

苹果有开源(上):乔布斯的复仇衍生品Darwin

lola OSC开源社区 2022-06-18

文 | lola

出品 | OSC开源社区(ID:oschina2013)

苹果(Apple Inc.)有多伟大,我相信已经无需赘述了。但是,这里的伟大是指用产品和理念对行业进行的革命性颠覆,而不是对开源而言。
相反,在某种程度上,苹果几乎就是开源的反义词。这种骨子里的“封闭”,从苹果诞生的那一刻就决定了。
1976 年,两位都叫做 Steve 的创始人(乔布斯 和 Wozniak)在车库创建苹果的时候,估计也没想到他们之后的分歧会如此之大。Wozniak 是个典型的工程师,当他把那个后来被称作 AppleⅠ的电路板展现给乔布斯时,当乔布斯用自己惊人的商业天赋将 AppleⅡ推成“爆款”时,就注定了 Wozniak 的工程师特质只能在乔布斯的天赋下落得下风。
苹果两位创始人手里拿着 AppleⅠ,乔布斯在右,Wozniak 在左
最早的时候,苹果公司只出售硬件。为了不让其他公司的软件“糟蹋”自家的硬件,苹果很快开发出了自家系统;为了防止用户破坏改装,苹果产品不能擅自拆开,电脑不能插入扩展卡,iPhone 不能换电池,还使用了特制的螺丝“防盗”。至此,苹果一家公司包办了整条产业链,从电子零件到销售网点,都是它的业务范围。无论硬件、软件、还是内容,都在它的控制之中。
除了绝无仅有的全封闭生态商业模式,苹果还盛行严苛的“保密制度”,员工泄密就意味着被解雇甚至面临诉讼。
电影《史蒂夫·乔布斯》中法鲨饰演的乔布斯在阐述自己的“封闭”理念
苹果当真只有封闭吗?当然不是。苹果可是实实在在地参与和贡献过开源。2021 年 12 月 9 日,苹果为其开源项目推出了一个重新设计的网站,包含了 Swift、WebKit、FoundationDB、ResearchKit、CareKit、Password Manager Resources 六个自主开源项目,而苹果参与贡献的其他项目也放在了上面。
没错,即使在开源被微软称做“毒瘤”的时代,苹果也没有这样激进地反对开源,它只是默不做声地、用一种狡猾且精明的态度来处理与开源的关系。 
简单来说,开源对苹果来说更像是一种工具和手段,为它所用、达其目的。开源在试图用自己的价值观念去构建一个开放且协作的技术环境,但当资本开始用吸收、提炼、利用、改造等手段去进行“柔性”地招安、整合和收编开源时,“异化”在所难免。而苹果正是此类资本的代表。
在本质上,开源更多是一种文化和信仰,是用社群的力量去构建完全开放的技术生态。而苹果所做的开源并没有涉及到这一深层次的“理想”,反而一直在“工具化”开源,这种开源真的是我们想要的吗? 

上篇:

乔布斯的复仇衍生品 Darwin

“你是想卖一辈子糖水呢,还是和我们一起改变世界?”
乔布斯在邀请当时的百事 CEO John Sculley 加入苹果时,肯定没有想到他会被 Sculley 踢出这个自己一手带大的公司。
1985 年 9 月 16 日,乔布斯辞职苹果的同时,为 NeXT 提交了公司注册文件。乔布斯用手里的股票换了 7000 万美金,只留了 1 股,为的是还能参加苹果的股东会。而这笔钱也成为了 NeXT 电脑公司和皮克斯动画公司的创业基金。其中,NeXT 公司所做的事成为了乔布斯回归苹果的砝码。
1988 年,NeXT 公司推出了 NeXT 电脑,使用 NeXTStep 为操作系统。在当时, NeXTStep 是相当先进的系统,以 Mach 内核和 Unix (BSD) 为基础, 使用 PostScript 提供高品质的使用者图形界面, 并以 Objective-C 语言提供完整的面向对象环境。
此外,NeXTStep 操作系统提出程序坞(Dock or Taskbar)的概念和一系列现代 GUI 界面上的概念,例如拖动窗口时的实时滚动、彩色的图标概念、文件修改时的提示功能等,还开创了现代 GUI 编辑器的先河,对整个计算机界都产生了深远影响。
而 NeXTStep 所基于的基础 —— Mach 和 BSD 都是开源的。
但 NeXT 并没有给乔布斯赚到什么钱,反而和皮克斯动画一起将乔布斯卖苹果股票换来的 7000 万美金亏了个干净。在乔布斯快撑不住的时候,幸好皮克斯动画推出的《玩具总动员》大爆,才得以回血;而 NeXT 公司早从 1992 年起,就因为硬件销售情况不佳,开始授权其它硬件生产商使用 NeXTStep 系统,并在 1993 年停止了亏损的硬件业务,开始专心于软件市场开发。
NeXT 公司创始团队,乔布斯在 C 位
1996 年 12 月 20 日,苹果开始收购 NeXT 公司,其中包括所有知识产权、技术以及软件开发人员。1997 年 2 月 7 日,这笔收购以 4.29 亿美元和乔布斯获得 150 万股苹果股票的价格完成,同时乔布斯取代了当时的 CEO Amelio,王者归来。
这 11 年,不仅是乔布斯的蛰伏期,同样也是苹果的。1996 年决定收购 NeXT 的时候,苹果已经陷入了经营管理困局,电脑市场份额由鼎盛时的 16% 跌到 4%,股票也一蹶不振。
明面上看,苹果是在购买一个可以取代旧 Mac OS 的操作系统;但实际上,苹果就是在召回乔布斯。乔布斯归来后立马叫停了 Sculley 主导的 Newton 项目,继续推行自己“Think Different”的理念。事后我们再来审视,这无异于一场乔布斯的复仇故事。
而 NeXT 所开发的操作系统,正是这场复仇中最有力的武器。
收购 NeXT 后,苹果开始开发基于 Mach 的 MacOS 继任者,将 Mach 内核从 2.5 升级到 3,使用 FreeBSD 内核中的概念和组件对其进行了扩展,以形成一个称为 XNU 的内核。在此基础上,苹果拿出了该公司史上的第一个开源项目 Darwin,它拥有 BSD 这支非常纯正的开源血统(主要是 FreeBSD),是一个完全开源的操作系统,与苹果自身商业的系统同源。
https://www.apple.com/newsroom/2000/04/05Apple-Releases-Darwin-1-0-Open-Source/
为此,苹果还特意聘请了 FreeBSD 创建人之一 Jordan Hubbard 掌管 BSD 技术团队(一开始其实苹果相中的是 Linux 之父 Linus Torvalds,但被 Linus 拒绝了)。随后,Hubbard 又成为了苹果 Unix 技术部门的主管,为苹果付出了 12 年的青春年华。
除此之外,苹果还专门为 Darwin 设计了一款名叫 APSL(Apple Public Source License) 的开源许可证,这个许可证不仅得到了 OSI (Open Source Initiative)的认可,还被 FSF(Free Software Foundation)认可为“自由软件许可证”。
APSL 与几款主流开源许可证对比
怎么回事?苹果难道转性了?不封闭了?当然不是,这恰恰是苹果利用开源的第一步。正如时任 FSF 副总裁的 Bradley Kuhn 之前评论的那样:

They clearly have some interest in helping certain Free Software projects (such as GCC and GDB), but I don't think they are really dedicated to the goal of software freedom. For them, it's likely only a pragmatic necessity that leads them to support some Free Software projects.

他们(苹果)显然对帮助某些自由软件项目(例如 GCC 和 GDB)有一定的兴趣,但我认为他们并没有真正致力于软件自由的目标。对他们来说,支持一些自由软件项目仅是因为一种现实层面的需求。

当时,Bradley Kuhn 看到一向以“封闭”著称的苹果开始允许内部员工参与开源,是非常欢迎的。但正如他所言,苹果所做的这一切并不是为了“自由软件”。 
首先,Darwin 的开源并没有打乱苹果既有的商业模式和市场优势。苹果出售的不是软件、也不是服务,而是机器。一个操作系统 Kernel 的开源不是什么大事,毕竟,开源的又不是苹果一向看重的 Aqua GUI,而对于 GUI 这样的核心优势,你要模仿苹果就能告你到破产。
其次,苹果之所以掺合自由软件这事,也是因为自由软件的确好用。比如,具有颠覆性的 Mac OS X 的基础就是 NetBSD 和 FreeBSD 的 BSD 版本,BSD 为 Mac 带来了多任务处理,并允许向它们移植大量 Unix 和 BSD 应用程序。因此, Mac 电脑开始摆脱创意艺术家工具的定位,成为一个更通用的系统,被越来越多的家庭和小型企业所使用。
除此之外,苹果(其实是 NeXT)还使用了 Richard Mattew Stallman(自由软件运动发起人)开发的 GCC 编译器。
有人认为,苹果引入开源的 BSD 子系统(主要包括 FreeBSD,还有少部分 OpenBSD 和 NetBSD)可以说是 Mac OS X 的精髓所在:一方面它提供了对各种业界标准的兼容,另一方面则保证系统安全性。
然而,由此衍生开源出来的 Darwin,苹果并没有好好照顾。
作为一个单独的产品,Darwin 并没有获得太多的人气。2002 年 4 月,苹果成立OpenDarwin.org(一个协助合作 Darwin 发展的社群),这个社群可以创建发布自己的 Darwin 操作系统,且为开源开发人员提供资源,以便为苹果的 Mac OS X 交互和生产产品。但很快,OpenDarwin 项目就随着苹果对 OS X 的组件控制加强而于 2006 年 7 月 25 日关闭。
据知,OpenDarwin 团队在宣布该项目关闭时表示,OpenDarwin 已经“成为仅用于Mac OS X相关项目的托管工具”。他们想要创建独立的达尔文操作系统,可是失败了。

较少来源的可用性、与苹果代表的不良互动、建立和跟踪来源的困难以及缺乏兴趣的社区,都应该为此负责。

如今,在苹果开源的官网上,我们已经找不到 Darwin 的踪影,取而代之的是一个名为 UNIX 的项目,被排在开源项目网页的角落。
https://developer.apple.com/opensource/
再次,苹果的这次开源行动给开源界带来好处有限,却反而还榨走了不少资源。一方面,苹果以开源之名继续从 BSD 世界中借鉴创新;另一方面,从 2001 ~ 2013 年,Jordan Hubbard 这一在 FreeBSD 社区举足轻重的人物因为在为苹果效力,而难以兼顾到 FreeBSD,这或多或少为 FreeBSD 的发展带来不利。(详情可参考:《FreeBSD 大败局》
最后,苹果对开源上游的反馈也是不足够的。根据 FreeBSD 基金会的记录,苹果公司在 2021 年向该基金会捐赠的金额在 1000 到 4999 美元之间。当然了,秉承高尚品德,FreeBSD 的核心贡献者在被问及苹果贡献上游积极性不足的问题时,也没有因此责怪苹果。
此外,去年还有件趣事,也足以表明苹果对开源项目利用又轻视的心态。
2021 年 11 月,curl 创始人兼首席开发者 Daniel Stenberg 发表了一篇吐槽苹果的博客,原因是当用户向苹果寻求帮助时,苹果直接回复用户让他自行联系 curl。

想象一下,一家市值万亿美元的公司将各种开源组件应用到自己的产品中,每年赚取数十亿美元的利润。当这家公司的一个用户向它提供的产品寻求帮助时,公司却把用户推给开源项目。这个开源项目是由志愿者运营和维护的,这家公司从未赞助过一分钱。

毫无疑问,Daniel 对苹果的做法颇有不满,因为它没有为项目做出任何贡献,却在别人求助的时候把问题抛到自己身上,无疑是被当成了免费的工具人。
OpenDarwin 项目关停之后, PureDarwin 作为其非正式的继承者出现了。这个社区致力于让 Darwin 更可用,但实际上,它与 OpenDarwin 之间没有任何官方关系。这个被社群拯救出来的项目,已经与苹果无关了。
Darwin 折戟之后,苹果没有停止在开源上的动作,而是将其对开源的利用、控制和收编发挥到了新的高度。欢迎继续阅读下期:《苹果有开源(中):浏览器二战功臣 WebKit 开源的爱与恨》

推荐阅读



微软再陷抄袭风波

首个支持苹果M1的Linux发行版来啦!

Android Studio可用于开发Android系统


觉得不错,请点个在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存